package com.woniuxy.amusementparkos.service.lsy.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.woniuxy.amusementparkos.dao.lsy.WriststrpTypeDao;
import com.woniuxy.amusementparkos.entity.lsy.ConsumerItem;
import com.woniuxy.amusementparkos.entity.lsy.WriststrpType;
import com.woniuxy.amusementparkos.service.lsy.WriststrpTypeService;

/**
* @author Muzi
* 腕带类型服务对象
* 2020年4月27日下午7:39:08
*/
@Service
public class WriststrpTypeServiceImpl implements WriststrpTypeService {
	
	@Autowired
	private WriststrpTypeDao wriststrpTypeDao;

	@Override
	public List<WriststrpType> listAll() {
		return wriststrpTypeDao.listAllWriststrpType();
	}

	// 启用事务控制
	@Transactional
	@Override
	public void insertWriststrpType(WriststrpType wriststrpType) throws RuntimeException {
		// 添加腕带类型时，先添加主表（wr**Type），再添加从表
		// 插入主表，获取插入后的主键值
		wriststrpTypeDao.insertWriststrpType(wriststrpType);
		// 新增执行后，将主键信息已填充到对象中，直接获取
		int type_id = wriststrpType.getType_id();
		List<ConsumerItem> items = wriststrpType.getItems();
		// 遍历 获得消费项id  将腕带类型消费项关联，添加至关联表（从表）
		for (ConsumerItem item : items) {
			// 逐一关联
			Integer row = wriststrpTypeDao.insertWriststrpTypeAndConsumerItem(item.getConsumer_item_id(),type_id);
		}

	}
	// 启用事务控制
	@Transactional
	@Override
	public void updateWriststrpType(WriststrpType wriststrpType) throws RuntimeException {
		// 修改主表
		wriststrpTypeDao.updateWriststrpType(wriststrpType);
		// 获得腕带类型主键id
		int type_id = wriststrpType.getType_id();
		// 删除 类型和消费项的 原关联数据 通过腕带类型主键执行删除
		wriststrpTypeDao.deleteWriststrpTypeAndConsumerItem(type_id);
		// 添加 类型和消费项的 新的关联数据
		List<ConsumerItem> items = wriststrpType.getItems();
		for (ConsumerItem item : items) {
			// 逐一设置新的关联
			wriststrpTypeDao.insertWriststrpTypeAndConsumerItem(item.getConsumer_item_id(),type_id);
		}
		

	}

	// 启用事务控制
	@Transactional
	@Override
	public void deleteWriststrpType(Integer type_id) throws RuntimeException {
		// 先删从表，在删主表
		// 删从表
		wriststrpTypeDao.deleteWriststrpTypeAndConsumerItem(type_id);
		// 删主表
		wriststrpTypeDao.deleteWriststrpType(type_id);
	}

}
